前言
公司业务有个需求,为了检测某项运动项目的动作标准性,我们需要从不同的两个方向同时拍摄3s左右的视频,那么我们可能需要想办法用一台手机发送指令,控制另外两台手机进行录像。这里我们选用的技术方案是通过WebSocket。
这里拍起来不太方便,就这么凑合着看着吧,下边是录好视频的效果
思路
Dart他本身可以作为socket的服务接收client的请求,所以在每台flutter的app中(拍摄设备)启动一个socket服务,因为他们在同一局域网内,小程序可以通过ip地址来连接到flutter的socket服务,小程序可以连接最多五个个socket服务,最多可以控制五台设备。
小程序部分
先填写两台设备的ip地址(从APP里边获取ipAddress),只要在同一个局域网内,应该都能连接成功,连接成功后,获取回调socketTask,他有一系列socket的api,这里不多叙述了
1 | async connectWebsocket() { |
接着就能给flutter发送数据了,通过 socketTask.send(object)
1 | sendMessage(e) { |
这里我写了几个方法,直接通过socket传拍照、录像、停止录像的信息到APP的socket服务
1 | takePhoto() { |
Flutter部分
这里我直接拷贝了网上Dart socket服务的写法
1 | // 打开WebSocket |
中间takingPictures()、onVideoRecordButtonPressed()、onStopButtonPressed()就是拍照、录像、停止录像的方法,至此,小程序就已成功控制了flutter进行拍照录像